import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.HashSet;

import javax.swing.SwingConstants;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JSeparator;
import java.awt.Color;
/**
 * Fenêtre de consultation d'un ouvrage
 * Code du JFrame généré par Window Builder/Swing Designer.
 * @author IUT,  A.Culet 
 * @version 1.0
 */

public class VueConsultOuvrage extends Vue {

	private JPanel contentPane;
	private JTextField textFieldIsbn;
	private JTextField textFieldTitre;
	private JTextField textFieldEditeur;
	private JTextField textFieldDateEdition;
	private JTextField textFieldNbConsultables;
	private JTextField textFieldNbEmpruntables;
	
	// pour que les boutons soient des attributs, il faut faire "convert local to field"
	private JButton buttonRech;
	private JButton buttonAnnuler;
	private JButton buttonAnnuler2;
	private JButton buttonFermer;
	
	private JTextArea textAreaAuteur;
	private JTextArea textAreaMotCle;
	
	
	/**
	 * Create the frame.
	 */
	public VueConsultOuvrage(Controleur controleur) {
		super(controleur);
		setTitle("Informations sur un ouvrage");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
		setBounds(100, 100, 520, 575);
		contentPane = new JPanel();
		contentPane.setBackground(Color.WHITE);
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblNewLabel = new JLabel("Isbn");
		lblNewLabel.setHorizontalAlignment(SwingConstants.RIGHT);
		lblNewLabel.setBounds(27, 67, 61, 15);
		contentPane.add(lblNewLabel);
		
		textFieldIsbn = new JTextField();
		textFieldIsbn.setBounds(112, 65, 214, 18);
		contentPane.add(textFieldIsbn);
		textFieldIsbn.setColumns(10);
		
		JLabel lblNewLabel_1 = new JLabel("Titre");
		lblNewLabel_1.setHorizontalAlignment(SwingConstants.RIGHT);
		lblNewLabel_1.setBounds(27, 170, 61, 15);
		contentPane.add(lblNewLabel_1);
		
		textFieldTitre = new JTextField();
		textFieldTitre.setEditable(false);
		textFieldTitre.setBounds(112, 168, 214, 19);
		contentPane.add(textFieldTitre);
		textFieldTitre.setColumns(10);
		
		buttonAnnuler = new JButton("Annuler");
		buttonAnnuler.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			getControleur().fermerVue(VueConsultOuvrage.this);}
		});
		buttonAnnuler.setBounds(270, 102, 107, 25);
		contentPane.add(buttonAnnuler);
		
		buttonRech = new JButton("Rechercher");
		buttonRech.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().rechOuvrage(textFieldIsbn.getText());
				}
		});
		buttonRech.setBounds(387, 102, 107, 25);
		contentPane.add(buttonRech);
		
		buttonFermer = new JButton("Fermer");
		buttonFermer.setEnabled(false);
		buttonFermer.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			getControleur().fermerVue(VueConsultOuvrage.this);}
		});
		buttonFermer.setBounds(387, 501, 107, 25);
		contentPane.add(buttonFermer);
		
		JLabel lblAuteur = new JLabel("Auteur(s)");
		lblAuteur.setHorizontalAlignment(SwingConstants.RIGHT);
		lblAuteur.setBounds(12, 231, 76, 15);
		contentPane.add(lblAuteur);
		
		textFieldEditeur = new JTextField();
		textFieldEditeur.setEditable(false);
		textFieldEditeur.setColumns(10);
		textFieldEditeur.setBounds(112, 289, 214, 19);
		contentPane.add(textFieldEditeur);
		
		JLabel lblEditeur = new JLabel("Editeur");
		lblEditeur.setHorizontalAlignment(SwingConstants.RIGHT);
		lblEditeur.setBounds(12, 291, 76, 15);
		contentPane.add(lblEditeur);
		
		textFieldDateEdition = new JTextField();
		textFieldDateEdition.setEditable(false);
		textFieldDateEdition.setColumns(10);
		textFieldDateEdition.setBounds(112, 320, 214, 19);
		contentPane.add(textFieldDateEdition);
		
		JLabel lblDatedition = new JLabel("Date \u00E9dition");
		lblDatedition.setHorizontalAlignment(SwingConstants.RIGHT);
		lblDatedition.setBounds(6, 322, 82, 15);
		contentPane.add(lblDatedition);
		
		JLabel lblNbExemplairesEn = new JLabel("Nb exemplaires en consultation");
		lblNbExemplairesEn.setBounds(24, 429, 202, 15);
		contentPane.add(lblNbExemplairesEn);
		
		JLabel lblNbExemplairesEmpruntables = new JLabel("Nb exemplaires empruntables");
		lblNbExemplairesEmpruntables.setBounds(24, 460, 202, 15);
		contentPane.add(lblNbExemplairesEmpruntables);
		
		textFieldNbConsultables = new JTextField();
		textFieldNbConsultables.setEditable(false);
		textFieldNbConsultables.setBounds(280, 427, 46, 19);
		contentPane.add(textFieldNbConsultables);
		textFieldNbConsultables.setColumns(10);
		
		textFieldNbEmpruntables = new JTextField();
		textFieldNbEmpruntables.setEditable(false);
		textFieldNbEmpruntables.setBounds(280, 458, 46, 19);
		contentPane.add(textFieldNbEmpruntables);
		textFieldNbEmpruntables.setColumns(10);
		
		JLabel lblMotsCls = new JLabel("Mots clés ");
		lblMotsCls.setBounds(21, 384, 67, 15);
		contentPane.add(lblMotsCls);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(112, 199, 214, 66);
		contentPane.add(scrollPane);
		
		textAreaAuteur = new JTextArea();
		textAreaAuteur.setEditable(false);
		scrollPane.setColumnHeaderView(textAreaAuteur);
		
		
		JScrollPane scrollPane_1 = new JScrollPane();
		scrollPane_1.setToolTipText("");
		scrollPane_1.setBounds(112, 351, 214, 66);
		contentPane.add(scrollPane_1);
		
		textAreaMotCle = new JTextArea();
		textAreaMotCle.setEditable(false);
		scrollPane_1.setColumnHeaderView(textAreaMotCle);
		
		buttonAnnuler2 = new JButton("Annuler");
		buttonAnnuler2.setEnabled(false);
		buttonAnnuler2.setBounds(288, 502, 89, 23);
		buttonAnnuler2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				setEtat(Vue.initiale);
			}
		});
		contentPane.add(buttonAnnuler2);
		}
	
	/**
	 * alimentation des composants d'affichage en consultant directement l'ouvrage
	 */
	public void alimente(Ouvrage ouv) {
			textFieldTitre.setText(ouv.getTitre());
			textFieldEditeur.setText(ouv.getEditeur());
			
			textAreaAuteur.setText("");
			for(Auteur aut: ouv.getAuteur()){
				textAreaAuteur.append("Nom :" + String.valueOf(aut.getNom()) + " Prénom : " + String.valueOf(aut.getPrenom()) + "\n");
			}		
									
			textAreaMotCle.setText("");
			for(MotCle c : ouv.getMotCle()) {
				textAreaMotCle.append("Mots clés :" + String.valueOf(c) + "\n");
			}
			
			
			textFieldDateEdition.setText (ESDate.ecrireDate (ouv.getDateEdition()));
			int nbConsult = ouv.getNbExemplairesEnConsultation();
			int nbEmpr = ouv.getNbExemplairesEmpruntable();
			textFieldNbConsultables.setText (String.valueOf(nbConsult));
			textFieldNbEmpruntables.setText (String.valueOf(nbEmpr));
			this.repaint();
			if ((nbConsult+ nbEmpr)== 0 ){
				Message dialog = new Message("Aucun exemplaire n'est encore disponible");
				dialog.setVisible(true);
			}
	}
	/**
	 * définition des états de la fenêtre, cad des régions actives selon l'état
	 */
	public void setEtat (int etat){
		switch (etat) {
		case initiale: {
			buttonRech.setEnabled(true);
			buttonAnnuler.setEnabled(true);
			buttonAnnuler2.setEnabled(false);
			buttonFermer.setEnabled(false);
			textFieldIsbn.setText("");
			textFieldTitre.setText("");
			textFieldEditeur.setText("");
			textFieldDateEdition.setText("");
			textFieldNbConsultables.setText("");
			textFieldNbEmpruntables.setText("");
			
			textAreaAuteur.setText("");
			textAreaMotCle.setText("");
			break;
			}
		case finale: {
			buttonRech.setEnabled(false);
			buttonAnnuler.setEnabled(false);
			buttonFermer.setEnabled(true);
			buttonAnnuler2.setEnabled(true);
			break;
			}
		}
	}
}
